\section{Komponentenentwurf}
\subsection{Object}
Die Klasse Object ist ''Die Basisklasse aller Basisklassen''. Sie dient nur dazu, dass alle
Klassen eine gemeinsame Basisklasse haben.

\subsection{Roomplan}
Der Raumplan verwaltet Räume in einer Liste. Räume können nur untereinander angeordnet werden, also 
werden sie in der Reihenfolge in der sie hinzugefügt werden, in einer Liste gespeichert. 

Der Raumplan bietet die Möglichkeit zwei Räume miteinander zu verbinden und Räume auszugeben.

\subsection{Room}
Die Klasse Room repräsentiert einen Raum. Jeder Raum der sich in einem Raumplan befindet, hat die gleiche
größe (Dafür sorgt der Raumplan). 
Jeder Raum hat 4 Seiten. Eine solche Seite kann entweder eine Wand oder ein Durchgang sein. Der Raum
kümmert sich darum, dass die Seiten wissen zu welchen Raum sie gehören und das benachbarte Räume / Seiten
voneinander wissen.
Die Klasse Raum stellt bietet auch die Möglichkeit einen Raum auszugeben.

\subsection{Side}
Diese Klasse ist abstrakt und die Basisklasse von Wall und Door. Sie hält Informationen über die Länge einer Seite und zu welchem Raum die Seite gehört.
\subsection{Wall}
Diese Klasse hält Informationen über eine Wand. Gespeichert wird die Wandfarbe in einem String als Hexcode. Per Default ist die Wandfarbe ''\#FFF'', also weiß. Mittels der Printfunktion wird die Wand auf sdt::cout ausgegeben, wobei die aktuelle Position, wo ausgegeben werden soll, mitgegeben wird. EIne Wand hat keinen Nachbarn, weshalb in der Funktion hasNeighbour() immer false zurückgeliefert wird und die setNeighbour()-Funktion leer implementiert wurde. Eine Wand kann für eine Raumkopie geklont werden.
\subsection{Door}
Diese Klasse hält Informationen über einen Durchgang. Gespeichert werden dabei eine bool-Variable (ist der Durchgang offen oder geschlossen?) und ein Pointer auf einen Raum (ist der Durchgang mit einem zweiten Raum verbunden?). Per Default ist der Durchgang geschlossen und hat keinen Nachbarn. Mittels der Printfunktion wird der Durchgang auf sdt::cout ausgegeben, wobei die aktuelle Position, wo ausgegeben werden soll, mitgegeben wird. Ein Durchgang kann für eine Raumkopie geklont werden.